package com.eshore.norm.pojo.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 单台云主机详情
 * </p>
 *
 * @author chenjl
 * @since 2024-01-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class NormVm implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    private Long id;

    /**
     * 资源池id
     */
    @ApiModelProperty(value = "资源池id")
    private Long configId;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createDate;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateDate;

    /**
     * 访问ipv4地址
     */
    @ApiModelProperty(value = "访问ipv4地址")
    @TableField("accessIPv4")
    private String accessIPv4;

    /**
     * 访问ipv6地址
     */
    @ApiModelProperty(value = "访问ipv6地址")
    @TableField("accessIPv6")
    private String accessIPv6;



    /**
     * 创建日期，时间戳
     */
    @ApiModelProperty(value = "创建日期")
    private String created;

    /**
     * 镜像ID
     */
    @ApiModelProperty(value = "镜像ID")
    private String flavorId;

    /**
     * 镜像VCPU
     */
    @ApiModelProperty(value = "镜像VCPU")
    private Integer flavorVcpus;

    /**
     * 镜像RAM，单位MB
     */
    @ApiModelProperty(value = "镜像RAM")
    private Integer flavorRam;

    /**
     * 镜像磁盘容量，单位G
     */
    @ApiModelProperty(value = "镜像磁盘容量")
    private Integer flavorDisk;


    /**
     * 服务器的UUID。
     */
    @ApiModelProperty(value = "服务器的UUID")
    private String serverId;


    /**
     * 服务器名称。
     */
    @ApiModelProperty(value = "服务器名称")
    @TableField("name")
    private String name;



    /**
     * 可用性区域名称。
     */
    @ApiModelProperty(value = "可用性区域名称")
    @TableField("availability_zone")
    private String availabilityZone;


    /**
     * 实际返回的是hostId
     */
    @ApiModelProperty(value = "拟化驱动程序提供的虚拟化主机名")
    @TableField("hypervisor_hostname")
    private String hypervisorHostname;


    /**
     * 实例的电源状态。这是一个枚举值，映射为：0_ NOSTATE 1_ RUNNING 3_ PAUSED 4_ SHUTDOWN
     * 6_ CRASHED 7_ SUSPENDED
     */
    @ApiModelProperty(value = "实例的电源状态")
    @TableField("power_state")
    private Integer powerState;



    /**
     * 服务器状态。
     */
    @ApiModelProperty(value = "服务器状态")
    @TableField("status")
    private String status;

    /**
     * 多租户云中租户的UUID的日期和时间。
     */
    @ApiModelProperty(value = "多租户云中租户的UUID的日期和时间")
    private String tenantId;

    /**
     * 资源更新的日期和时间。日期和时间戳格式是ISO 8601。
     */
    @ApiModelProperty(value = "资源更新的日期和时间")
    private String updated;

    /**
     * 拥有服务器的用户的用户ID。
     */
    @ApiModelProperty(value = "拥有服务器的用户的用户ID")
    private String userId;


    /**
     * 如果实例被锁定，则为True；否则为False。
     */
    @ApiModelProperty(value = "如果实例被锁定")
    private Boolean locked;


    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    private String description;

    /**
     * 锁定服务器的原因。
     */
    @ApiModelProperty(value = "锁定服务器的原因")
    private String lockedReason;


}
